package business;

import org.hibernate.Session;
import org.hibernate.Transaction;

import utils.HibernateUtil;
import entities.Auteur;
import exceptions.NoEntityException;

public class AuteurAanmaker implements IEntityAanmaker<Auteur>
{
	private Auteur auteur;
	
	private String naam;
	private String voornaam;
	private String tussenvoegsel;
	
	// Constructor
	
	public AuteurAanmaker(String naam, String voornaam)
	{
		this.naam = naam;
		this.voornaam = voornaam;
	}
	
	// Getters en Setters
	
	public String getNaam()
	{
		return naam;
	}
	public void setNaam(String naam)
	{
		this.naam = naam;
	}
	public String getVoornaam()
	{
		return voornaam;
	}
	public void setVoornaam(String voornaam)
	{
		this.voornaam = voornaam;
	}
	public String getTussenvoegsel()
	{
		return tussenvoegsel;
	}
	public void setTussenvoegsel(String tussenvoegsel)
	{
		this.tussenvoegsel = tussenvoegsel;
	}

	@Override
	public Auteur createEntity()
	{
		auteur = new Auteur(naam, voornaam);
		auteur.setTussenvoegsel(tussenvoegsel);
		return auteur;
	}

	@Override
	public boolean saveEntity()
	{
		try {
			if (auteur == null) {
				throw new NoEntityException();
			}
		} catch (NoEntityException e) {
			e.printStackTrace();
			return false;
		}

		Session session = null;
		Transaction tx = null;

		try {
			// get a session
			session = HibernateUtil.getSessionFactory().openSession();

			// Start a tx
			tx = session.beginTransaction();
			
			session.save(auteur);

			// Commit the changes
			tx.commit();
		} catch (RuntimeException e) {
			e.printStackTrace();

			if (tx != null)
				tx.rollback();

			// the boek has not been added, so return false.
			return false;
		} finally {
			if (session != null) {
				session.close();
			}
		}

		return true;
	}
	
}
